#include "Tag.h"


Tag::Tag(){

	this->tipo = new string();
	this->hijos = new Lista<Tag>();
	this->atributos = new Diccionario();
	
}
Tag::Tag(const string &tipo, const int &linea){
	this->tipo = new string(tipo);
	this->linea = linea;
	this->hijos = new Lista<Tag>();
	this->atributos = new Diccionario();
}

unsigned int const Tag::getLinea(){
	return this->linea;
}

string const Tag::getTipo(){
	return *this->tipo;
}

Lista<Tag>* Tag::getHijos(){
	return this->hijos;
}

void Tag::addHijo(Tag *hijo){
	this->hijos->agregar(hijo);
}

string* Tag::getAtributo(const string& atributo){
	return this->atributos->get(atributo);
}

Diccionario* Tag::getAtributos(){
	return this->atributos;
}

void Tag::setAtributo(const string &atributo, const string &valor){
	this->atributos->put(atributo, valor);

}


void Tag::setTipo(const string& tipo){
	*(this->tipo) = tipo;
	
}

void Tag::setLinea(const int& linea){
	this->linea = linea;
}

Tag::~Tag(){
	delete this->tipo;
	delete this->hijos;
	delete this->atributos;
}